Firebird 1.5 - narust pameti + pomale ulozeni

Otázka od: delphi@mjsoft.cz

21. 5. 2004 15:29

Zdravim,

  mam databazi ne moc velkou. V tabulce KARTY je asi 25.000 zaznamu.
Pokud dam prikaz "UPDATE KARTY SET CENA=1 WHERE ID=1", tak jeho vykonani
trva asi 5sec. Kdyz dam tento prikaz znovu, tak je to hned. Vsiml jsem
si, ze si firebird behem tohoto prikazu vezme asi 20MB pameti navic. Z
pocatecnich 9MB po 27MB. Potom uz se vyuzita pamet nezvysuje. Zajimave
je, ze pokud potom menim neco v mensi tabulce, tak je to hned a pamet to
nezvysi, ale pokud ma tabulka vic zaznamu, tak je tam zase to spomaleni
a narust pameti.

  Da se toto chovani nejak ovlivnit? V IB6 to takto nezlobilo.

Diky predem

   Karel


Odpovedá: Pavel Cisar

21. 5. 2004 16:30

Haj hou!

On 21 May 2004 at 16:12, delphi@mjsoft.cz wrote:

> mam databazi ne moc velkou. V tabulce KARTY je asi 25.000 zaznamu.
> Pokud dam prikaz "UPDATE KARTY SET CENA=1 WHERE ID=1", tak jeho vykonani
> trva asi 5sec. Kdyz dam tento prikaz znovu, tak je to hned. Vsiml jsem
> si, ze si firebird behem tohoto prikazu vezme asi 20MB pameti navic. Z
> pocatecnich 9MB po 27MB. Potom uz se vyuzita pamet nezvysuje. Zajimave
> je, ze pokud potom menim neco v mensi tabulce, tak je to hned a pamet to
> nezvysi, ale pokud ma tabulka vic zaznamu, tak je tam zase to spomaleni
> a narust pameti.

Odhadoval bych to na cache, jak db stranek, tak metadat. Mozna bych k
tomu prihodil i undo log u zmen dat (pokud je meneno vice zaznamu v
ramci transakce). Bohuzel neuvadis zadne podrobnosti jako je velikost
db stranky databaze, pocet stranek v databazi a velikost cache ve
strankach.
 
> Da se toto chovani nejak ovlivnit? V IB6 to takto nezlobilo.

Ovlivnit se da ledacos   Bohuzel nevlastnim kristalovou kouli abych
ti bez blizsich udaju poradil neco konkretniho.

S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase


Odpovedá: delphi@mjsoft.cz

24. 5. 2004 15:19

Zdravim,

> Odhadoval bych to na cache, jak db stranek, tak metadat. Mozna bych k
> tomu prihodil i undo log u zmen dat (pokud je meneno vice zaznamu v
> ramci transakce). Bohuzel neuvadis zadne podrobnosti jako je velikost
> db stranky databaze, pocet stranek v databazi a velikost cache ve
> strankach.

Velikost DB (PAGE SIZE) je 4096. DefaultDbCachePages je nastaveno na
2048. V transakci provadim jen upravu jednoho zaznamu a hned ji zase
ukoncim. Tabulka KARTY ma 2338 stranek. Nevim co jineho bych mel jeste
zkontrolovat, nebo nastavit.


Diky

  Karel


Odpovedá: Pavel Cisar

24. 5. 2004 15:31

Haj hou!

On 24 May 2004 at 15:56, delphi@mjsoft.cz wrote:

> Velikost DB (PAGE SIZE) je 4096. DefaultDbCachePages je nastaveno na
> 2048. V transakci provadim jen upravu jednoho zaznamu a hned ji zase
> ukoncim. Tabulka KARTY ma 2338 stranek. Nevim co jineho bych mel jeste
> zkontrolovat, nebo nastavit.

1. Zvetsil bych db cache (nastavit pres gfix primo u databaze) zkusmo
na 5000 stranek.

2. Rovnez je mozne zvetsit db stranky na 8K (pres backup/restore),
ale tobych si nechal az na pozdeji.

3. Rovnez je nutne ohlidat si mnozstvi dostupne RAM, aby po zmene
parametru nedochazelo k odstrankovavani.

4. Pokud nic zasadneji nepomuze, pak bych proveril strukturu databaze
(zda jsou dusledne pozivany domeny, zda neni pouzita prilis
komplikovana struktura prav, hloubka indexu apod.)

5. Urcity rozdil mezi prvnim provedenim prikazu a nasledujicimi tady
bude vzdycky.

S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase


Odpovedá: delphi@mjsoft.cz

24. 5. 2004 17:09

Zdravim,

> 1. Zvetsil bych db cache (nastavit pres gfix primo u databaze) zkusmo
> na 5000 stranek.

to jsem vyzkousel, ale zadna zmena nenastala

> 2. Rovnez je mozne zvetsit db stranky na 8K (pres backup/restore),
> ale tobych si nechal az na pozdeji.

tento bod se chystam otestovat

> 3. Rovnez je nutne ohlidat si mnozstvi dostupne RAM, aby po zmene
> parametru nedochazelo k odstrankovavani.

RAM pameti je dost, tu si ohlidam

> 4. Pokud nic zasadneji nepomuze, pak bych proveril strukturu databaze
> (zda jsou dusledne pozivany domeny, zda neni pouzita prilis
> komplikovana struktura prav, hloubka indexu apod.)

hloubka indexu je 2 a prava vubec nepouzivam. V tech domenach by mohl
byt zakopany pes. Ja vlastne domeny taky nepouzivam. Firebird je vytvari
pro kazdy slozupec za mne. Kdyz se ted mrknu do DB, tak jich tam je
3849. Mohlo by to byt tim?

> 5. Urcity rozdil mezi prvnim provedenim prikazu a nasledujicimi tady
> bude vzdycky.

s tim pocitam, ale prvni prikaz trva moc dlouho



Diky za ochotu

  Karel


Odpovedá: Slavomir Skopalik

24. 5. 2004 17:29

je na ID index ?
Cekal bych tam primarni klic a odezvu do 20 ms.

 Slavek

> mam databazi ne moc velkou. V tabulce KARTY je asi 25.000
> zaznamu. Pokud dam prikaz "UPDATE KARTY SET CENA=1 WHERE
> ID=1", tak jeho
vykonani trva asi 5sec. Kdyz dam tento prikaz


Odpovedá: Pavel Cisar

24. 5. 2004 17:51

Haj hou!

On 24 May 2004 at 18:01, delphi@mjsoft.cz wrote:

> > 4. Pokud nic zasadneji nepomuze, pak bych proveril strukturu databaze
> > (zda jsou dusledne pozivany domeny, zda neni pouzita prilis
> > komplikovana struktura prav, hloubka indexu apod.)
>
> hloubka indexu je 2 a prava vubec nepouzivam. V tech domenach by mohl
> byt zakopany pes. Ja vlastne domeny taky nepouzivam. Firebird je vytvari
> pro kazdy slozupec za mne. Kdyz se ted mrknu do DB, tak jich tam je
> 3849. Mohlo by to byt tim?

To je prave ten problem. FB sice domenu vytvori, ale pro kazdy
sloupec novou, takze COL1 INTEGER a COL2 INTEGER jsou dve ruzne
domeny. To pak pri komplexnejsi strukture vede k velke tabulce
RDB$FIELDS, coz zpomaluje kompilaci prikazu a zere pamet na metadata
cache. Urcite doporucuji dusledne pouzivat domeny.
 
S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase


Odpovedá: delphi@mjsoft.cz

31. 5. 2004 16:19

Zdravim,

  tak jsem zkusebne predelal drtivou vetsinu polozek tabulky na domeny.
Zjistil jsem ale, ze se nic nezmenilo. Takze tim to neni. Potom jsem
odmazal vsechny procedury(217) a triggery(439) a jde to bezvadne rychle.
Potom jsem tam vratil jen ty procedury a je to stale rychle. Nevite
nekdo co s tim, aby to behalo i kdyz tam jsou ty triggery?

Diky predem
Karel
 
> To je prave ten problem. FB sice domenu vytvori, ale pro kazdy
> sloupec novou, takze COL1 INTEGER a COL2 INTEGER jsou dve ruzne
> domeny. To pak pri komplexnejsi strukture vede k velke tabulce
> RDB$FIELDS, coz zpomaluje kompilaci prikazu a zere pamet na metadata
> cache. Urcite doporucuji dusledne pouzivat domeny.

> >V tech
> >domenach by mohl
> > byt zakopany pes. Ja vlastne domeny taky nepouzivam. Firebird je
> > vytvari pro kazdy slozupec za mne. Kdyz se ted mrknu do DB,
> > tak jich
> > tam je 3849. Mohlo by to byt tim?